import Koa from "koa";

export const error = () => {
    return async (ctx: Koa.Context, next: Koa.Next) => {
        try {
            await next();
            console.log("成功", ctx.status);
            switch (ctx.status) {
                case 200:
                    ctx.res.success();
                    break
                case 401:
                    ctx.res.fail({code: ctx.status, msg: "token不存在"});
                    break
                case 404:
                    if (ctx.msg) {
                        ctx.res.success(1)
                    } else {
                        ctx.res.fail({code: ctx.status, msg: "404"});
                    }
            }
        } catch (err) {
            console.log("错误：", err);
            if (err.code) {
                // 自己主动抛出的错误
                console.log(err);
                ctx.res.fail({code: err.code, msg: err.message});
            } else {
                // 程序运行时的错误
                ctx.app.emit('error', err, ctx);
            }
            if (err.status === 401) {
                ctx.res.fail({code: err.status, msg: '认证已超时，请重新登录'});
                // if (err.originalError instanceof TokenExpiredError) {
                //     // ctx.body = new LoginError('认证已超时，请重新登录');
                //     ctx.res.fail({ code: err.status, msg: '认证已超时，请重新登录' });
                // } else {
                //     // ctx.body = new LoginError('请先登录');
                //     ctx.res.fail({ code: err.status, msg: '请先登录' });
                // }
            }
        }
    };
};

